package middleware

import (
	"github.com/dgrijalva/jwt-go"
	"next-vue-backend/utils"
)

var JwtKey = []byte(utils.JwtKey)
var code int

type MyReq struct {
	Username string `json:"username"`
	jwt.StandardClaims
}

// 生成token
//func SetToken (username string) (string, int) {
//	expireTime := time.Now().Add(10 * time.Hour)
//	SetClaims := MyReq{
//		Username: username,
//		StandardClaims:jwt.StandardClaims{
//			ExpiresAt: expireTime.Unix(),
//			Issuer: "next-vue-backend",
//		},
//	}
//	reqClaim := jwt.NewWithClaims(jwt.SigningMethodHS256,SetClaims)
//	token,err := reqClaim.SignedString(JwtKey)
//	if err != nil {
//		return "",errmsg.ERROR
//	}
//	return token, errmsg.SSUCCESS
//}
// 验证token
//func CheckToken(token string) (*MyReq, int) {
//	setToken, _ := jwt.ParseWithClaims(token, &MyReq{}, func(token *jwt.Token) (interface{}, error) {
//		return JwtKey, nil
//	})
//	if key, _ := setToken.Claims.(*MyReq); setToken.Valid {
//		return key, errmsg.SSUCCESS
//	} else {
//		return nil, errmsg.ERROR
//	}
//
//}

// jwt中间件
//func JwtToken() gin.HandlerFunc {
//	return func(c *gin.Context) {
//		tokenHeader := c.Request.Header.Get("Authorization")
//
//		if tokenHeader == "" {
//			code = errmsg.ERROR_TOKEN_EXIST
//			c.JSON(http.StatusOK, gin.H{
//				"code":    code,
//				"message": errmsg.GetErrMsg(code),
//			})
//			c.Abort()
//			return
//		}
//		CheckTokens := strings.SplitN(tokenHeader, " ", 2)
//		if len(CheckTokens) != 2 && CheckTokens[0] != "Bearer" {
//			code = errmsg.ERROR_TOKEN_TYPE_WRONG
//			c.JSON(http.StatusOK, gin.H{
//				"code":    code,
//				"message": errmsg.GetErrMsg(code),
//			})
//			c.Abort()
//			return
//		}
//
//		key, tCode := CheckToken(CheckTokens[1])
//		if tCode == errmsg.ERROR {
//			code = errmsg.ERROR_TOKEN_WRONG
//			c.JSON(http.StatusOK, gin.H{
//				"code":    code,
//				"message": errmsg.GetErrMsg(code),
//			})
//			c.Abort()
//			return
//		}
//
//		if time.Now().Unix() > key.ExpiresAt {
//			code = errmsg.ERROR_TOKEN_RUNTIME
//			c.JSON(http.StatusOK, gin.H{
//				"code":    code,
//				"message": errmsg.GetErrMsg(code),
//			})
//			c.Abort()
//			return
//		}
//
//		c.Set("username", key.Username)
//		c.Next()
//	}
//}
